Modern computing and the programming that is a part thereof typically provides multitasking. Multitasking is the ability to perform, or to appear to a human user to perform, multiple tasks simultaneously. For example, a computer can be receiving a web request, printing a document, and managing data files so quickly that it is essentially performing each of the tasks simultaneously, at least from the perspective of a human observer.
A programming construct that facilitates multitasking is the thread. A thread may be considered a placeholder for information that is being handled by a computer program, including an operating system. Each thread is usually associated with a single incarnation of a program that is servicing a single entity. In such cases, the thread is created and maintained for that single entity.
During multitasking processing, a particular thread on a processor may be idled while another thread is then executed by the processor. In this sense, a thread may also or alternatively be considered code that is executable on the processor as part of a computer program. As time permits and/or events demand, the particular thread may subsequently be re-initiated by the processor for execution.
During execution of a thread, the thread can request memory resources for storing information that is for or otherwise used by the thread. Such information may include data, objects, code, and so forth. Such memory resources may be allocated in different manners as requested.
Unfortunately, the performance of a given computing system can be adversely affected by the manner in which the memory resources thereof are allocated to multiple threads. Accordingly, there is a need for memory allocation schemes and techniques that enable, or at least improve, the efficient operation of a computing system.